Thuật ngữ Task (khoa học máy tính)

Với khái niệm "đơn vị thực thi" (unit of execution), trong một số hệ điều hành, task tương đương với một tiến trình (process). Trong thực thi không tương tác (batch processing), một task là một đơn vị thực thi trong một job (công việc),[1][2] với bản thân một task là một tiến trình. Thuật ngữ "multitasking" (đa nhiệm) được dùng để chỉ việc xử lý nhiều tác vụ cùng một lúc, dưới góc dộ xử lý tiến trình, đồng thời cũng để chỉ việc thực hiện nhiều tác vụ cùng lúc.

Với khái niệm "đơn vị công việc" (unit of work), trong một công việc (có nghĩa là "công việc một lần"), một task có thể tương đương với một bước duy nhất (bản thân bước đó, chứ không phải việc thực hiện nó), trong khi việc xử lý hàng loạt các task riêng lẻ có thể tương ứng với một bước xử lý một đơn vị trong batch, hoặc một bước xử lý tất cả các đơn vị trong batch. Trong các hệ thống trực tuyến (kết nối Internet), các task thường tương ứng với một yêu cầu (request) duy nhất (trong kiến trúc response-request) như một HTTP request và response, hoặc một câu lênh truy vấn (trong truy xuất thông tin), một giai đoạn hoặc toàn bộ quá trình xử lý của hệ thống.

Ví dụ

Trong ngôn ngữ lập trình Java, hai khái niệm đơn vị công việc và đơn vị thực thi được gộp chung khi làm việc trực tiếp với các thread (luồng), nhưng được phân biệt rõ ràng trong Executor framework:[3] (Bản gốc tài liệu)

When you work directly with threads, a Thread serves as both a unit of work and the mechanism for executing it. In the executor framework, the unit of work and the execution mechanism are separate. The key abstraction is the unit of work, which is called a task.[4]

Thuật ngữ của IBM

Việc IBM sử dụng thuật ngữ "task" đã có ảnh hưởng lớn, mặc dù đã nhấn mạnh sự mơ hồ của thuật ngữ này. Trong thuật ngữ của IBM, task có nhiều định nghĩa cụ thể, bao gồm:[5]

  • Một đơn vị công việc đại diện cho một trong các bước trong một tiến trình.
  • Một đơn vị công việc được thực hiện bởi một thiết bị hoặc tiến trình.
  • Một tiến trình và các thủ tục để chạy tiến trình đó.
  • Một tập hợp các hành động được thiết kế để đạt được một kết quả cụ thể. Một task được thực hiện trên một tập hợp các mục tiêu trên một lịch trình cụ thể.
  • Một đơn vị tính toán. Trong một công việc song song, hai hoặc nhiều task đồng thời hoạt động cùng nhau thông qua truyền tin nhắn và chia sẻ bộ nhớ. Mặc dù một tác vụ thường được phân bổ cho mỗi bộ xử lý vật lý (physical processor) hoặc logic (logical processor), thuật ngữ "task" và "bộ xử lý" (processor) không thể hoán đổi cho nhau.
  • Một hoạt động có giá trị do người dùng khởi xướng và được thực hiện bằng phần mềm.

Đặc biệt trong z/OS, nó được định nghĩa chính xác là:[6]

  • "Trong môi trường đa chương (multiprogramming) hoặc đa xử lý (multiprocessing), một hoặc nhiều chuỗi lệnh (instructions) được chương trình điều khiển coi như là một phần của công việc được máy tính thực hiện."

Khái niệm "task" trong OS/360 thông qua z/OS gần tương đương với tiến trình nhẹ (light-weight process); các task trong một bước công việc (job step) chia sẻ cùng một địa chỉ trong bộ nhớ. Tuy nhiên, trong MVS/ESA thông qua z/OS, một task hoặc Service Request Block (SRB) (Khối Yêu cầu Dịch vụ) có thể có quyền truy cập vào các vùng địa chỉ khác thông qua danh sách truy cập của nó.

Nhân Linux

Thuật ngữ task được sử dụng trong nhân Linux (ít nhất là kể từ v2.6.13,[7] và ở các phiên bản sau và bao gồm v4.8[8]) để chỉ một đơn vị thực thi, đơn vị này có thể chia sẻ nhiều tài nguyên hệ thống với các task khác trên hệ thống. Tùy thuộc vào mức độ chia sẻ, một task có thể được coi là một chuỗi hoặc tiến trình thông thường. Các task được thực hiện bằng dùng clone() trong system call,[9] nơi người dùng có thể chỉ định mức chia sẻ tài nguyên mong muốn.

Tài liệu tham khảo

WikiPedia: Task (khoa học máy tính) http://www-01.ibm.com/software/globalization/termi... http://www-01.ibm.com/support/knowledgecenter/zosb... http://www-01.ibm.com/support/knowledgecenter/zosb... http://www.liutilities.com/articles/what-are-compu... http://whatis.techtarget.com/definition/task http://man7.org/linux/man-pages/man2/clone.2.html https://github.com/torvalds/linux/blob/v2.6.13/inc... https://github.com/torvalds/linux/blob/v4.8/includ... https://books.google.com/books?id=BIpDDwAAQBAJ&lpg... https://books.google.com/books?id=ThYcAQAAMAAJ&dq=...